home *** CD-ROM | disk | FTP | other *** search
- .model tiny
- .code
- org 100h
-
- Inicio: CALL LiberaMEM
- MOV DX, Offset Cad1
- MOV AH, 9h
- INT 21h
-
- XOR AH, AH
- INT 16h
- OR AL, 00100000b
- CMP AL, 's'
- JNE ExitDOS
-
- MOV BX, 1000 ; Pedimos 4000 bytes.
- MOV AH, 48h
- INT 21h
- JC ErrorMEM
- MOV ES, AX
-
- MOV CX, 5000 ; El máximo que pedimos era 4000
- XOR AX, AX
- XOR DI, DI
- REP STOSB
-
- MOV AH, 49h
- INT 21h
- JNC ExitDOS
-
- ErrorMEM: MOV DX, Offset Cad2
- MOV AH, 9h
- INT 21h
- ExitDOS: MOV AX, 4C00h
- INT 21h
-
- Cad1 DB 'Programa que demuestra como NO se debe usar la memoria del PC',0ah,0dh
- DB ' Se pedirá menos memoria de la necesaria y el sistema se bloqueará,',0ah,0dh
- DB ' Quieres segir? (S/N)',0dh,0ah,'$'
- Cad2 DB 'Se ha producido un error en la memoria',0ah,0dh,'$'
-
- LiberaMEM PROC ; Función que libera la memoria
- MOV BX, SS ; reservada por el DOS a nuestro
- MOV AX, ES ; programa y que no es utilizada.
- SUB BX, AX ; ES debe contener el PSP.
- MOV AX, SP
- ADD AX, 15d
- SHR AX, 4
- ADD BX, AX
- MOV AH, 4Ah
- INT 21h
- RET
- LiberaMEM ENDP
-
- END Inicio
-